use crate::{AppConfig, APP_DATA};

pub struct ConfigManager;

impl ConfigManager {
    // 获取当前配置
    pub fn get_config() -> AppConfig {
        let app_data = APP_DATA.lock().unwrap();
        app_data.config.clone()
    }
    
    // 更新默认便签颜色
    pub fn update_default_color(color: String) {
        let mut app_data = APP_DATA.lock().unwrap();
        app_data.config.default_color = color;
        app_data.save();
    }
    
    // 更新字体大小
    pub fn update_font_size(size: i32) {
        let mut app_data = APP_DATA.lock().unwrap();
        app_data.config.font_size = size;
        app_data.save();
    }
    
    // 更新透明度
    pub fn update_opacity(opacity: i32) {
        let mut app_data = APP_DATA.lock().unwrap();
        app_data.config.opacity = opacity;
        app_data.save();
    }
    
    // 更新开机自启动设置
    pub fn update_auto_start(enabled: bool) {
        let mut app_data = APP_DATA.lock().unwrap();
        app_data.config.auto_start = enabled;
        app_data.save();
        
        // 在Windows系统上设置开机自启动
        #[cfg(target_os = "windows")]
        {
            use std::process::Command;
            use std::env;
            
            if enabled {
                let exe_path = env::current_exe().unwrap();
                let exe_path_str = exe_path.to_string_lossy();
                
                // 使用 reg add 命令添加到注册表
                Command::new("reg")
                    .args(&[
                        "add", 
                        "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", 
                        "/v", "MemoryNote", 
                        "/t", "REG_SZ", 
                        "/d", &exe_path_str, 
                        "/f"
                    ])
                    .output()
                    .expect("Failed to set auto start");
            } else {
                // 使用 reg delete 命令从注册表中删除
                Command::new("reg")
                    .args(&[
                        "delete", 
                        "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", 
                        "/v", "MemoryNote", 
                        "/f"
                    ])
                    .output()
                    .expect("Failed to remove auto start");
            }
        }
    }
    
    // 更新自动保存间隔
    pub fn update_auto_save_interval(seconds: i32) {
        let mut app_data = APP_DATA.lock().unwrap();
        app_data.config.auto_save_interval = seconds;
        app_data.save();
    }
    
    // 重置为默认配置
    pub fn reset_to_defaults() {
        let mut app_data = APP_DATA.lock().unwrap();
        app_data.config = AppConfig::default();
        app_data.save();
    }
} 